﻿using System;
using System.Collections.Generic;
using IGolovkine.ShoutCastRipper.Filters;
namespace IGolovkine.ShoutCastRipper
{
    public interface IStationRipper : IDisposable
    {
        IList<IContentTitleFilter> TitleFilters { get; }

        StationRipperStatus Status { get; }

        string ContentTitle { get; }
        
        DateTime CurrentContentTitleStartTime { get; }
        TimeSpan CurrentContentTitleLength { get; }

        string Name { get; }
        string CurrentUrl { get; }
        
        void Start();
        void Stop();
        void SkipCurrentTitle(string reason);
        void StopAfterCurrentTitle();

        bool IsStoppingAfterCurrentTitle { get; }
        void CancelStopAfterCurrentTitle();

        event EventHandler<StationRipperContentTitleChangedEventArgs> ContentTitleChanged;
        event EventHandler<StationRipperStatusChangedEventArgs> StatusChanged;
        event EventHandler<StationRipperUrlChangedEventArgs> UrlChanged;
    }
}
